﻿using BCEntity.TMS.MoveHouseConfig.MoveHouseSpecificationConfig;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BCData.TMS.MoveHouseConfig.MoveHouseSpecificationConfig
{
    public interface IMoveHouseSpecificationConfigData
    {

        /// <summary>
        /// 是否存在
        /// </summary>
        /// <param name="specificationName">规格名称</param>
        /// <param name="moveHouseConfigId">搬家分类id</param>
        /// <param name="moveHouseSpecificationConfigId">搬家规格id</param>
        /// <returns></returns>
        Task<bool> IsExist(string specificationName,long moveHouseConfigId,long? moveHouseSpecificationConfigId);

        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        Task<MoveHouseSpecificationConfigEntity> InsertAsync(MoveHouseSpecificationConfigEntity entity);
        /// <summary>
        /// 修改
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        Task<MoveHouseSpecificationConfigEntity> UpdateAsync(MoveHouseSpecificationConfigEntity entity);
        /// <summary>
        /// /获取
        /// </summary>
        /// <param name="moveHouseSpecificationConfigId"></param>
        /// <returns></returns>
        Task<MoveHouseSpecificationConfigEntity> GetSingle(long moveHouseSpecificationConfigId);
        /// <summary>
        /// 获取扩展
        /// </summary>
        /// <param name="moveHouseSpecificationConfigId"></param>
        /// <returns></returns>
        Task<MoveHouseSpecificationConfigViewEntity> GetSingleView(long moveHouseSpecificationConfigId);
        /// <summary>
        /// 获取列表
        /// </summary>
        /// <param name="moveHouseConfigId"></param>
        /// <returns></returns>
        Task<IEnumerable<MoveHouseSpecificationConfigEntity>> GetList(long moveHouseConfigId, bool? isEnable);
        /// <summary>
        /// 
        /// </summary>
        /// <param name="moveHouseConfigId"></param>
        /// <param name="agentRecordId"></param>
        /// <param name="provinceCode"></param>
        /// <param name="cityCode"></param>
        /// <param name="countyCode"></param>
        /// <param name="isEnable"></param>
        /// <param name="isShowMain"></param>
        /// <returns></returns>
        Task<IEnumerable<MoveHouseSpecificationConfigViewEntity>> GetList(long moveHouseConfigId, long? agentRecordId, string provinceCode,
            string cityCode, string countyCode, bool? isEnable, bool isShowMain);


        /// <summary>
        /// 
        /// </summary>
        /// <param name="moveHouseConfigId"></param>
        /// <param name="isEnable"></param>
        /// <returns></returns>
        Task<IEnumerable<MoveHouseSpecificationConfigEntity>> GetAllList(long? moveHouseConfigId, bool? isEnable);

        Task<(IEnumerable<MoveHouseSpecificationConfigViewEntity>, int)> Query(long moveHouseConfigId, long? agentRecordId, string provinceCode,
            string cityCode, string countyCode, bool? isEnable, bool isShowMain, int pageIndex, int pageSize);
        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="moveHouseSpecificationConfigId"></param>
        /// <returns></returns>
        Task<int> DeleteAsync(long moveHouseSpecificationConfigId);

    }
}
